home *** CD-ROM | disk | FTP | other *** search
/ Tech Win 1995 November / CD [TECH_B].bin / tech_b / delphi / trial / disk1 / dbtools.pak / SYBMON.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1995-08-08  |  2.7 KB  |  110 lines

  1. {
  2.   This application shows a simple way to monitor Sybase SQL Server activity.
  3.   You must have Delphi C/S in order to use this application.
  4. }
  5.  
  6. unit Sybmon;
  7.  
  8. interface
  9.  
  10. uses WinTypes, WinProcs, Classes, Graphics, Forms, Controls, StdCtrls, Tabs,
  11.   Buttons, ExtCtrls, DB, DBTables, Grids, DBGrids;
  12.  
  13. type
  14.   TSybMonitorDialog = class(TForm)
  15.     ButtonPanel: TPanel;
  16.     TabSet: TTabSet;
  17.     ExitBtn: TBitBtn;
  18.     MonitorDb: TDatabase;
  19.     Refresh: TTimer;
  20.     MonitorSource: TDataSource;
  21.     ActivityQuery: TQuery;
  22.     ProcessesQuery: TQuery;
  23.     LocksQuery: TQuery;
  24.     MonitorGrid: TDBGrid;
  25.     OptionsBtn: TBitBtn;
  26.     procedure TabSetClick(Sender: TObject);
  27.     procedure ExitBtnClick(Sender: TObject);
  28.     procedure RefreshTimer(Sender: TObject);
  29.     procedure OptionsBtnClick(Sender: TObject);
  30.     procedure FormShow(Sender: TObject);
  31.   private
  32.     MonitorQueries: array [0..3] of TQuery;
  33.   public
  34.     { Public declarations }
  35.   end;
  36.  
  37. var
  38.   SybMonitorDialog: TSybMonitorDialog;
  39.  
  40. implementation
  41.  
  42. {$R *.DFM}
  43.  
  44. uses OpenDb, Options, SysUtils;
  45.  
  46. procedure TSybMonitorDialog.TabSetClick(Sender: TObject);
  47. begin
  48.   MonitorSource.Dataset.Active := False;
  49.   MonitorSource.Dataset := MonitorQueries [TabSet.TabIndex];
  50.   MonitorSource.Dataset.Active := True;
  51. end;
  52.  
  53. procedure TSybMonitorDialog.ExitBtnClick(Sender: TObject);
  54. begin
  55.   Close;
  56. end;
  57.  
  58. procedure TSybMonitorDialog.RefreshTimer(Sender: TObject);
  59. var
  60.    Bookmark: TBookmark;
  61. begin
  62.   if MonitorSource.Dataset.Active then
  63.   begin
  64.      MonitorSource.Enabled := False;
  65.      Bookmark := MonitorSource.Dataset.GetBookmark;
  66.      try
  67.         MonitorSource.Dataset.Active := False;
  68.         MonitorSource.Dataset.Active := True;
  69.         MonitorSource.Dataset.GotoBookmark (Bookmark)
  70.      finally
  71.         MonitorSource.Dataset.FreeBookmark (Bookmark)
  72.      end;
  73.      MonitorSource.Enabled := True
  74.   end
  75. end;
  76.  
  77. procedure TSybMonitorDialog.OptionsBtnClick(Sender: TObject);
  78. begin
  79.   OptionsDlg.ShowModal;
  80. end;
  81.  
  82. procedure TSybMonitorDialog.FormShow(Sender: TObject);
  83. var
  84.    MR: TModalResult;
  85. begin
  86.   MR := OpenDbDlg.ShowModal;
  87.   if MR = mrOk then
  88.   try
  89.      if CompareText (OpenDbDlg.AliasType, 'SYBASE') <> 0 then
  90.         raise Exception.Create ('Must specify a Sybase alias');
  91.  
  92.      Caption := Caption + ' - ' + OpenDbDlg.AliasName;
  93.      MonitorDb.AliasName := OpenDbDlg.AliasName;
  94.      MonitorDb.Connected := True;
  95.      MonitorSource.Dataset := ActivityQuery;
  96.      ActivityQuery.Active := True;
  97.      MonitorQueries [0] := ActivityQuery;
  98.      MonitorQueries [1] := ProcessesQuery;
  99.      MonitorQueries [2] := LocksQuery;
  100.      Refresh.Enabled := True
  101.   except
  102.      Application.HandleException (Self);
  103.      MR := mrCancel
  104.   end;
  105.  
  106.   if MR <> mrOk then Close
  107. end;
  108.  
  109. end.
  110.